package  org.darcy.framework.generic;
import java.util.List;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;

/**
 * 所有自定义Service的顶级接口,封装常用的增删查改操作
 */
public interface GenericService<T> {
	

	/**
	 * 插入对象
	 *
	 * @param model 对象
	 */
	T insert(T model);

	/**
	 * 通过主键, 删除对象
	 *
	 * @param id 主键
	 */
	int delete(Object id);

	/**
	 * 更新对象
	 *
	 * @param model 对象
	 */
	int update(T model);

	/**
	 * 批量更新
	 */
	public int updateBatch(T record, QueryWrapper<T> queryWrapper);

	/**
	 * 通过主键, 查询对象
	 *
	 * @param id 主键
	 * @return model 对象
	 */
	T getById(Object id);

	/**
	 * 批量查询
	 *
	 * @param ids，多个id，用逗号分隔
	 */
	List<T> getByIdBatch(String ids);

	/**
	 * 查询多个对象
	 *
	 * @return 对象集合
	 */
	List<T> getList(Wrapper<T> queryWrapper);

	/**
	 * 查询数量
	 *
	 * @return 对象集合
	 */
	long count(Wrapper<T> queryWrapper);

	/**
	 * 批量删除
	 *
	 * @param ids，多个id，用逗号分隔
	 */
	int deleteBatch(String ids);

	/**
	 * 分页查询列表
	 *
	 * @return 对象集合
	 */
	IPage<T> getPage(IPage<T> param, QueryWrapper<T> queryWrapper);


}
